package com.ht.callback.controller;

import com.ht.callback.function.CallbackFunction;
import com.ht.callback.util.FunctionUtil;

import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.XML;
import lombok.extern.slf4j.Slf4j;

/**
 * 临时的数据库写工具类
 * @author asq
 * @createTime 2025年1月8日 20:58:08
 */
@Slf4j
public class DbTest {
	public static void sendToDb(JSONArray callbackConfigList, String appid, String data) {
		log.info(">>写数据库：appid:{},data:{}", appid, data);
		
//		// 解析xml为json
//		JSONObject json = XML.toJSONObject(data, false);
////		String msgType = json.getStr("MsgType");
////		String event = json.getStr("Event");
////		String changeType = json.getStr("ChangeType");
//		
//		// 从平台的callback列表中匹配一个
//		JSONObject config = findCallbackConfig(callbackConfigList, json);
//		
//		// 找到callback对应的func
//		String func = config.getStr("func");
//		
//		// 转为callback中定义的标准json结构
//		JSONObject jsonTemp = config.getJSONObject("result_data");
//		JSONObject myJson = parseMyJson(jsonTemp, json);
//		
//		// 执行func
//		CallbackFunction callback = FunctionUtil.getFunction(func);
//		if (callback != null) {
//			callback.execute(myJson);
//		}
	}

//	private static JSONObject parseMyJson(JSONObject jsonTemp, JSONObject json) {
//	    if (jsonTemp == null) {
//	        return null;
//	    }
//	    
//	    JSONObject result = new JSONObject();
//	    
//	    // 遍历模板中的所有字段
//	    jsonTemp.forEach((key, value) -> {
//	        if (value instanceof JSONObject) {
//	            // 如果是嵌套的 JSON 对象，递归处理
//	            JSONObject subJson = json != null ? json.getJSONObject(key) : null;
//	            result.set(key, parseMyJson((JSONObject) value, subJson));
//	        } else {
//	            // 获取字段类型
//	            Object jsonValue = json != null ? json.get(key) : null;
//	            
//	            if (jsonValue == null) {
//	                // 根据模板中的类型设置默认值
//	                if (value instanceof Number) {
//	                    result.set(key, 0);
//	                } else if (value instanceof String) {
//	                    result.set(key, "");
//	                } else {
//	                    result.set(key, null);
//	                }
//	            } else {
//	                // 使用 json 中的值
//	                result.set(key, jsonValue);
//	            }
//	        }
//	    });
//	    
//	    return result;
//	}
//
//	private static JSONObject findCallbackConfig(JSONArray callbackConfigList, JSONObject json) {
//	    if (callbackConfigList == null || json == null) {
//	        return null;
//	    }
//	    
//	    // 遍历配置列表
//	    for (int i = 0; i < callbackConfigList.size(); i++) {
//	        JSONObject config = callbackConfigList.getJSONObject(i);
//	        JSONObject key = config.getJSONObject("key");
//	        
//	        if (key == null) {
//	            continue;
//	        }
//	        
//	        boolean allMatch = true;
//	        // 遍历 key 中的所有字段
//	        for (String fieldName : key.keySet()) {
//	            String configValue = key.getStr(fieldName);
//	            String jsonValue = json.getStr(fieldName);
//	            
//	            // 如果有任一字段不匹配，标记为 false 并跳出循环
//	            if (!StrUtil.equals(configValue, jsonValue)) {
//	                allMatch = false;
//	                break;
//	            }
//	        }
//	        
//	        // 如果所有字段都匹配，返回当前配置
//	        if (allMatch) {
//	            return config;
//	        }
//	    }
//	    
//	    return null;
//	}
}
